Method for document page delivery to a mobile communication device

ABSTRACT

A process for viewing a selected portion of a document on a mobile communication device without having to request multiple pages of the document contents containing document global properties applied to the selected part of the document, comprising marking pages of the document within a server, based on size required by the mobile device, associating properties and attributes of the selected portion with the pages, and transmitting the pages with the properties and attributes for display by the mobile device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.12/724,557, filed Mar. 16, 2010, which is a continuation of U.S. patentapplication Ser. No. 10/930,677, filed Aug. 31, 2004, now U.S. Pat. No.7,712,027, the contents of both applications are incorporated herein byreference in their entirety.

FIELD OF THE INVENTION

The following is directed in general to displaying content on mobilecommunication devices, and more particularly to a method for viewing aselected portion of a document on a mobile communication device withouthaving to request multiple pages of the document contents containingdocument global properties applied to the selected part of the document.

BACKGROUND OF THE INVENTION

Mobile communication devices are becoming increasingly popular forbusiness and personal use due to a relatively recent increase in numberof services and features that the devices and mobile infrastructuressupport. Handheld mobile communication devices, sometimes referred to asmobile stations, are essentially portable computers having wirelesscapability, and come in various forms. These include Personal DigitalAssistants (PDA), cellular phones and smart phones. While their reducedsize is an advantage to portability, bandwidth and processingconstraints of such devices present challenges to the downloading andviewing of documents, such as word processing documents, tables andimages.

Electronic documents are produced using various computer programs, suchas word processors, spreadsheet programs, financial software, andpresentation software. In addition to text, such documents containstructural and property information such as paragraph indentation, textcolor and table size, etc.

When a user of a mobile communication device wishes to view onlyselected portions of a document stored on a remote server, otherportions of the document that contain the structural information andproperties used by the selected portion must also typically betransmitted to the mobile communication device. The required downloadingof these other portions occurs over a potentially bandwidth-constrainedwireless network. For example, if a user wishes to view only a singleparagraph in a section at the middle of a 400-page document, the entiresection (and sometimes even entire document) that contains defaultproperties for the paragraph must be transmitted to the mobilecommunication device.

Once downloaded to the device, the electronic document is viewed using auser interface on the mobile communication device, which typicallydiffers from the user interface used to create and view a document on apersonal computer. For example, whereas the user interface on a personalcomputer may include a large, color display and a pointing device suchas a mouse, the mobile communication device typically has only a small,possibly non-color, screen, and may not have a mouse. In addition, themobile communication device typically has greater processing power andmemory limitations than a personal computer.

SUMMARY OF THE INVENTION

According to an aspect of this specification, a method is set forth forviewing a selected portion of a server stored document on a mobiledevice, comprising building a graph structure within said serverrepresenting a map of said document; calculating an output size for eachnode in said graph structure based on size required by said mobiledevice and in response marking each page start in said graph structure;searching said graph structure for a parent node representing a pagestart for said selected portion of said document; associating propertiesand attributes of said selected portion with said parent node; andtransmitting pages of said parent and all child nodes along with saidproperties and attributes for display by said mobile device.

According to another aspect, a process is set forth viewing a selectedportion of a server stored document on a mobile device, comprising:building a graph structure within said server representing a map of saiddocument; marking pages of the document within said server based on sizerequired by said mobile device; associating properties and attributes ofsaid selected portion with ones of said pages containing said selectedportion; and transmitting said ones of said pages containing saidselected portion with said properties and attributes for display by saidmobile device independently of other pages of said document; whereinsaid associating properties and attributes further comprises searchingsaid graph structure for a node representing a page start for saidselected portion of said document; traversing said graph structure andrecursively storing each parent of said node representing the page startin a parent container within said server, such that said parentcontainer contains all nodes and leaves belonging to said page start andeach parent of said node; and generating an output for each said pagestart containing contents and attributes of all said nodes and leavesbelonging to said page start and attributes of each parent of said noderepresenting the page start, for transmission to said mobile device

By using this approach for page delivery from the server, the client onthe mobile device is able to retrieve any portion (page) of a documentand display it independently, since all of its properties and attributesare already associated. This eliminates the order dependence fordisplaying a document such as required by a desktop application. Moreimportantly, overall network bandwidth usage is limited.

Additional aspects and advantages will be apparent to a person ofordinary skill in the art, residing in the details of construction andoperation as more fully hereinafter described and claimed, referencebeing had to the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

A detailed description of the preferred embodiment is set forth indetail below, with reference to the following drawings, in which:

FIG. 1 is a block diagram of a network environment in which thepreferred embodiment may be practiced;

FIG. 2 is a tree diagram showing the basic structure of a DocumentObject Model (DOM) used in the preferred embodiment of the invention;

FIG. 3 shows the top-level of the DOM structure in FIG. 2;

FIG. 4 shows an exemplary DOM structure for a word processing document;

FIG. 5 shows an exemplary DOM structure for a table document;

FIG. 6 shows an exemplary DOM structure for a word processing documentcontaining an image subdocument;

FIG. 7 is a flowchart showing document DOM structure construction andpagination according to the preferred embodiment; and

FIG. 8 is a flowchart showing document DOM page generation and deliveryaccording to the preferred embodiment.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

With reference to FIG. 1, network environment 10 is shown in which thepreferred embodiment of the invention may be practiced. Networkenvironment 10 includes mobile devices 12 communicating via a wirelessnetwork 14 to a server 28 for downloading document attachments to themobile devices 12. While only one server 28 is shown for illustrationpurposes, a person of skill in the art will understand that networkenvironment 10 could have many such servers for hosting web sites orgraphic download sites, providing access to picture files such as JPEG,IFF, BMP, PNG, SGI, MP4, MOV, GIF, SVG, etc. As would be understood byone of ordinary skill in the art, wireless networks 14 include GSM/GPRS,CDPD, TDMA, iDEN Mobitex, DataTAC networks, or future networks such asEDGE or UMTS, and broadband networks like Bluetooth and variants of802.11.

A connection to a fixed service requires special considerations, and mayrequire special permission as authorized through a Network Access Point(NAP) 16. For generic services, such as web access, a proxy-gateway orNetwork Address Translator (NAT) 18 may be provided so that a networkoperator can control and bill for the access. NATs 18 enable managementof a limited supply of public Internet addresses for large populationsof wireless mobile devices. Solutions offered by a proxy-gateway or NAT18 can require a complex infrastructure and thus may be managed by avalue-added service providers (VASPs), which provide, for instance, WAPgateways, WAP proxy gateway solutions, multi-media messaging servers(MMS) and Internet Multi-Media Services (IMS).

Private Intranet services 26 also connected to Internet 20 may requiretheir own Private Intranet Proxy Gateway 24 for accessing content onserver 28. Such private services include WML access to corporate mailsystems, HTML access to CRM databases, or any other services thatdeliver information as formatted data with links and URLs embedded. Asshown, it is possible that a private service 26 may be connecteddirectly to wireless network 14, as opposed to connected via Internet20.

Referred to throughout this document for the purpose of describing thepreferred embodiment is the structure of a Document Object Model (DOM)for a document attachment to be viewed on a mobile device 12.

The attachment server 28 uses a designated file-parsing distiller for aspecific document type to build an in-memory Document Object Model (DOM)structure representing an attachment of that document type. The documentDOM structure is stored in a memory cache of server 28, and can beiterated bi-directionally.

As shown in FIG. 2, the graph-based document DOM structure consists ofnodes and leaves. The nodes serve as the parents of leaves and nodes,while leaves are end points of a branch in the graph. Each node and leafcan have a set of attributes to specify its own characteristics. Forexample, a paragraph node can contain attributes to specify itsalignment, style, entry of document TOC, etc. In addition, each of thenodes and the leaves has a unique identifier, called a DOM ID, toidentify itself in the document DOM structure.

The document DOM structure is divided into three parts: top-level,component and references. The top level refers to the document rootstructure, while the main document is constructed in the component andthe references represent document references to either internal orexternal sub-document parts. The following paragraphs examine each partin detail.

The root node of a document DOM structure, referred to as “Document”,contains several children nodes, referred to as “Contents”, whichrepresent different aspects of the document contents. Each “Contents”node contains one or multiple “Container” nodes used to store variousdocument global attributes. The children of the “Container” nodes arecomponents, which store the document structural and navigationalinformation. When the attachment server 28 builds the DOM structure foran attachment file for the first time, the top-level structure is asingle parent-child chain as shown in FIG. 3:

Three types of components are defined by the attachment server 28: textcomponents, table components and image components, which represent text,tables and images in a document, respectively. The text and tablecomponents are described in detail below, and the image componentstructure is identical.

A component consists of a hierarchy of command nodes. Each commandrepresents a physical entity, a property, or a reference defined in adocument. For the text component, the physical entity commands are page,section, paragraph, text segments, comments, footnote and endnotecommands, which by name define the corresponding entity contained in adocument. The property commands for the text component are font, textcolor, text background color, hyperlink start/end and bookmark commands.The text component has only one reference command, referred to as thetext reference command, which is used to reference a subdocument definedin the main body of a document. Usually, the children of a textcomponent are page or section command nodes that, in turn, comprise aset of paragraph command nodes. The paragraph command can contain one ormultiple nodes for the remaining command types.

Using the following sample text document, the corresponding document DOMstructure is shown in FIG. 4:

First paragraph. Second paragraph with bold and red text.

As FIG. 4 demonstrates, the section command, which is the child of thetext component, consists of two paragraph commands. The first paragraphcommand contains one text segment command and the text content for thatparagraph is added as an attribute to the text segment command. Thesecond paragraph command has a relatively more complex structure, as thetext properties in the paragraph are much richer. Each time a textproperty (font, text color, etc) changes, a corresponding text propertycommand is created and the change value is added to that command as anattribute. The following text segment command records the text with thesame text property as an attribute. As document structure gets richerand more complex, more commands of corresponding types are created andthe document properties are added as attributes to those commands.

The table component has the same three types of commands as the textcomponent, but different command names. The document DOM structure forthe sample table document below is shown in FIG. 5:

Cell One Cell Two Cell Three Cell Four

As shown in the FIG. 5, the table component has physical entity typecommands of table, tablerow and tablecell, where the tablecell commandcan contain all available commands for the text component. In theexample above, the first child TableRow command of the table command hasan attribute “Index” defined by value of 0. This indicates that theindicated table row is the first one defined in the table. The attributeof the leftmost table cell command in FIG. 5 has the same meaning.

A document sometimes contains subdocuments, for example images, tables,text boxes etc. The DOM structure set forth herein uses a referencecommand to point to the graph of such subdocuments. Thus, for thefollowing sample document, the attachment server 28 generates the DOMstructure shown in FIG. 6:

The structure shown in FIG. 6 is identical to that discussed above inconnection with FIGS. 4 and 5, except for the attributes of the tworeference commands. The attachment server 28 constructs the image in“Sample Three” as a separate image component, which contains all of theimage data in its own DOM hierarchy. In the DOM structure for the maindocument, the values of the “Ref” attributes of those two referencecommands point to the image component, as indicated by the dashed lines,such that the DOM structure connects together all parts of the document.

Having described the document DOM structure used to implement anembodiment of the invention, a detailed discussion will now be providedof a pagination function or method according to the preferredembodiment.

The pagination function is a client and server side operation. FIG. 7shows the processing steps, from which it will be noted that the server28 uses a map in memory for document DOM cache storage and the key tothe map is the document ID. Initially, when the user of a mobilecommunication device 12 sends a request to the server 28 to view adocument, the device 12 sends two attributes and the number of bytes itrequires (RequireSize) as a response from the server (e.g. 3 K bytes).The two attributes are whether the device is a color or monochromedevice, and the screen size (width.times.height.times.color depth) ofthe device in pixels. Other information about the device 12 can also betransmitted to the server 28 (e.g. memory size). After the server 28receives a document-viewing request, it starts the pagination process(step 30), and initializes the variables PageIndex and PageSize.

The following terms and variables are used in the process of FIG. 7:

The PageIndex variable is defined in the server 28 and used by theserver to record the current page index being paginated by the server.The page index is initially set to 0 indicating “Page 1”.

PageSize is a variable defined in the server 28 and used by the serverto record the current size for the page being paginated and is reset to0 when paginating a new page.

Hyperlink map is a variable defined in the server 28, which is acontainer consisting of the element type of hyperlink node in thedocument DOM structure. The key (ID) for each element in the containeris the hyperlink target string.

Bookmark map is a variable defined in the server 28 which is a containerconsisting of the element type of current page index (PageIndex value)for the bookmark in the document DOM structure. The key (ID) for eachelement in the container is the bookmark string.

The server process constructs a document ID (step 32) based on thedocument contents and uses the ID to check the document DOM cache (step33) to determine whether the document DOM structure for that documenthas been constructed. If the document DOM structure does not exist inthe cache, the server builds the DOM structure (step 34) for thedocument and adds it to the cache (step 35).

To construct the document ID, the original document file is opened andread in binary mode. The server 28 creates a MD5 Context structure,hashes the MD5 context structure with raw binary data, byte-by-byte,from the file, finalizes the MD5 context structure and retrieves the 16byte key for the file. The MD5 context structure has the followingstructure in syntax of C++ language

typedef struct {  unsigned long adwState[4]; /* state (ABCD) */ unsigned long adwCount[2]; /* number of bits, modulo 2{circumflex over( )}64 (lsb first) */  unsigned char abyBuffer[64]; /* input buffer */ }tMD5_CTX;

Caching the document DOM structure requires considerable memory, andtherefore increases the overall hardware deployment cost. On the otherhand, building the DOM structure for a document is even more time andCPU intensive in contrast to the document key construction operation,especially for big documents. Since processing time is more criticalthan hardware deployment cost for wireless operation, caching thedocument DOM is the approach adopted for the preferred embodiment,rather than building the DOM structure for the document each time theserver receives a viewing request and then discarding the structureafter sending the response back to the client device 12.

Once the document DOM structure has been built and stored in the cache,the server 28 determines whether a page mark has already been set in theroot (step 36). If not, the server traverses through the DOM structure(steps 38, 39, 40 and 41) and calculates the output size (PageSize) foreach node in the DOM structure based on the number of bytes(RequireSize) provided by the device 12. The server increments thePageIndex (step 42), adds it as an attribute to each node in order tomark the start of each page, and adds each node as an attribute to theroot node with the string representation of PageIndex as the attributename (step 43). Following this pagination function, the attachmentserver 28 is able to transmit the document page-by-page to therequesting mobile device 12 based on client generated requests, andprocess flow continues to FIG. 8 for DOM page generation and delivery(step 44).

The page mark attribute name is associated with the device informationand required response size (RequireSize) provided by the device 12, toenable the server to paginate through the document DOM structure andgenerate the response based on device capability. For example if thedevice is a monochrome type, the color information contained inside theDOM structure will be ignored during the server pagination and responsegeneration operations and therefore optimize the wireless bandwidthutilization.

Since the key to the memory map is the document ID, the algorithm usedto calculate the document ID (step 32) must guarantee the uniqueness ofthe key. According to the best mode, as set forth above, the algorithmused inside the server 28 is the MD5 messaging encryption algorithminvented by Professor Ronald L. Rivest of MIT Laboratory for ComputerScience and RSA Data Security, Inc. There are several other hashingoptions that can be used. However MD5 is the most efficient and reliableone based on the broad range of different document content required tobe processed by the server 28.

In the process of FIG. 8, PageStartNode is DOM structure node typewhich, in the preferred embodiment is a COM (Common object module)object base interface. VecParent is typically a one-dimensionalcontainer, for example vector, containing elements of DOM structure nodetype. It is used to store the parents (recursively until the node ofcomponent type) for the page-starting node, as discussed in greaterdetail below. bStart is a Boolean variable defined in the server 28 andused to signal that the required page has already been traversed.

In operation, the server 28 uses PageIndex to build the page markattribute (step 46) and search for the node representing the page start(step 47) for the page of interest identified by the client device 12.It is used by the server 28 to cache the node which marks the start forthe page required by the client device 12. Once the node is found, theserver 28 recursively retrieves the parent of the node (step 48) untilit reaches the component level (step 49) and puts all the parents intostorage (VecParent), namely the parent container (step 50). The server28 then traverses the DOM structure again (steps 51 et seq) to persistthe in-memory structure to a form that can be transmitted across thenetwork to the mobile device 12. If a node is one of those stored in theparent container (step 54), it generates the output for the node (step57). The output includes the contents and attributes for all of thenodes/leaves belonging to that page as well as the attributes of theparents for the page start node.

Upon locating the corresponding page start node (step 55), the server 28sets a Boolean (bStart) to true, indicating that the page has beentraversed (step 56), and generates the output (step 57) for eachfollowing node to be iterated until the next page mark is found (step58). Once the server 28 determines that it has completed traversing theDOM structure (step 52), or has found the next page start mark (step58), the process finishes (step 59).

From FIG. 8, it will be noted that all of the parents for the page-startnode are output into the response, which means the default attributesand properties defined for the node but contained in its parents, willpersist. However, the siblings of the node are ignored if they do notbelong to the response page. For example, if the client (mobile device12) requires the second part for a spreadsheet, the server 28 not onlygenerates the response containing the corresponding text contents butalso includes the global information for the table such as number ofrows and columns and current table row and cell index, etc., into theresponse. Once the client receives the response, it can display the textat the correct position without having to request the first part of thespreadsheet from the server.

A person skilled in the art, having read this description of thepreferred embodiment, may conceive of variations and alternativeembodiments. For example, generating multiple sets of page marks forsuccessive pages requires considerable time and CPU usage since theserver 28 has to re-traverse the DOM structure. Accordingly, onealternative is for the server 28 to create only one set of page marks ina document DOM structure and generate the response based on the deviceinformation. However, this approach is likely to create more page marksthan necessary and will introduce extra transactions between thewireless device 12 and the server 28 if the user wants to view a largeportion of a document. Based on the understanding that minimizing thewireless bandwidth usage is more critical than the processing time onthe server, creating multiple sets of the page marks and caching them isthe approach adopted in the preferred embodiment.

All such variations and alternative embodiments are believed to bewithin the ambit of the claims appended hereto.

1. A method comprising: marking, at a server, each page start in aserver-stored document, based on a page size associated with a mobiledevice; associating properties and attributes of a selected portion ofthe server-stored document with a parent node representing a page startfor the selected portion; and transmitting, to the mobile device, pagesof the parent node and child nodes containing the selected portion alongwith the properties and the attributes for display independent of otherpages of the server-stored document, thereby eliminating orderdependence for displaying the server-stored document since theproperties and the attributes of the server-stored document are alreadyassociated, such that the mobile device is enabled to independentlyretrieve and display any portion of the server-stored document.
 2. Themethod of claim 1, further comprising: receiving a page size limit fromthe mobile device indicative of the page size of a single page of theserver-stored document; traversing and paginating a graph structurerepresenting a map of the server-stored document into successive pageswithin the server based on the page size limit; and caching the pageswithin the server.
 3. The method of claim 2, wherein traversing andpaginating the graph structure further comprises: initializing a pagesize value; retrieving and calculating output page size of successivenodes of the graph structure; adding an output page size of thesuccessive nodes to the page size value; and in the event the page sizevalue exceeds the page size limit for a given node then marking thegraph structure to identify the given node as starting a new page fortransmission.
 4. The method of claim 3, further comprising marking thegraph structure by: maintaining a page index value that is incrementedwith each new page; adding the page index value as an attribute to eachgiven node for marking each new page; and adding each given node as anattribute to a root node of the graph structure with a stringrepresentation of the page index value as attribute name.
 5. The methodof claim 2, further comprising: calculating a document ID based oncontents of the server-stored document; checking a memory cache of theserver using the document ID to determine that the graph structure waspreviously built and, when the graph structure was previously built,accessing the graph structure and other wise building of the graphstructure.
 6. The method of claim 5, wherein calculating the document IDfurther comprises performing a hashing function on the contents of theserver-stored document and in response generating the document ID as aunique key to the map.
 7. The method of claim 6, wherein the hashingfunction comprises the MD5 messaging encryption algorithm.
 8. The methodof claim 2, wherein the graph structure is a Document Object Model(DOM).
 9. The method of claim 2, wherein the associating the propertiesand the attributes further comprises: traversing the graph structure andrecursively storing each parent of a node representing a page start in aparent container within the server, such that the parent containercontains all nodes and leaves belonging to the page start and eachparent of the node; and generating an output for each page startcontaining contents and attributes of all the nodes and leaves belongingto the page start and attributes of each parent of the node representingthe page start, for transmission to the mobile device.
 10. The method ofclaim 9, wherein the traversing the graph structure and recursivelystoring each parent of the node representing the page start in theparent container persists until a node of component type is reached. 11.The method of claim 10, wherein the generating an output for each pagestart persists until a further page start is located.
 12. A methodcomprising: marking, at a server, each page start in a server-storeddocument, based on a page size associated with a mobile device;associating properties and attributes of a selected portion of theserver-stored document with pages containing the selected portion; andtransmitting pages containing the selected portion with the propertiesand the attributes for display by the mobile device independent of otherpages of the server-stored document, thereby eliminating orderdependence for displaying the server-stored document since theproperties and the attributes of the server-stored document are alreadyassociated, such that the mobile device is enabled to independentlyretrieve and display any portion of the server-stored document.
 13. Themethod of claim 12, further comprising: receiving a page size limit fromthe mobile device indicative of the page size of a single page of theserver-stored document; traversing and paginating a graph structurerepresenting a map of the server-stored document into successive pageswithin the server based on the page size limit; and caching the pageswithin the server.
 14. The method of claim 12, wherein the associatingthe properties and the attributes further comprises searching the graphstructure for a node representing a page start for the selected portionof the server-stored document.
 15. The method of claim 14, furthercomprising: traversing the graph structure and recursively storing eachparent of the node representing the page start in a parent containerwithin the server, such that the parent container contains all nodes andleaves belonging to the page start and each parent of the node; andgenerating an output for each page start containing contents andattributes of all the nodes and leaves belonging to the page start andattributes of each parent of the node representing the page start, fortransmission to the mobile device.
 16. The method of claim 15, whereintraversing and paginating the graph structure further comprises:initializing a page size value; retrieving and calculating output pagesize of successive nodes of the graph structure; adding an output pagesize of the successive nodes to the page size value; and in the eventthe page size value exceeds the page size limit for a given node thenmarking the graph structure to identify the given node as starting a newpage for transmission.
 17. The method of claim 16, further comprisingmarking the graph structure by: maintaining a page index value that isincremented with each new page; adding the page index value as anattribute to each given node for marking each new page; and adding eachgiven node as an attribute to a root node of the graph structure with astring representation of the page index value as attribute name.
 18. Themethod of claim 15, wherein the traversing the graph structure andrecursively storing each parent of the node representing the page startin the parent container persists until a node of component type isreached.
 19. The method of claim 18, wherein the generating an outputfor each page start persists until a further page start is located. 20.The method of claims 13, wherein the graph structure is a DocumentObject Model (DOM).